2181. 合并零之间的节点

给你一个链表的头节点 head ，该链表包含由 0 分隔开的一连串整数。链表的 开端 和 末尾 的节点都满足 Node.val == 0 。
对于每两个相邻的 0 ，请你将它们之间的所有节点合并成一个节点，其值是所有已合并节点的值之和。然后将所有 0 移除，修改后的链表不应该含有任何 0 。
 返回修改后链表的头节点 head 。

https://leetcode.cn/problems/merge-nodes-in-between-zeros/description/

struct ListNode* mergeNodes(struct ListNode* head)
{
    struct ListNode*rhead=NULL;
    struct ListNode*tail=NULL;   
    struct ListNode*cur=head;

    while(cur->next)
    {
        if(cur->val==0)//头插
        {
            if(tail==NULL)
            {
                tail=rhead=cur;
            }
            else
            {
                tail->next=cur;
                tail=tail->next;
            }
        }
        if(cur->val)
            tail->val=tail->val+cur->val;
        cur=cur->next;
    }
    tail->next=NULL;
    return rhead;
}